#ifndef LCDCONFIGPARSER_H
#define LCDCONFIGPARSER_H

#include <QString>
#include <QWidget>
#include <QBoxLayout>
#include <QDomElement>
#include <QHash>

class LcdSplitManager;

class LcdConfigParser
{
public:
	typedef bool (LcdConfigParser::* TagHandler)(const QDomElement&, QBoxLayout*, QString*);
	LcdConfigParser();
	virtual bool parseXmlAndLayoutIt(const QString &xmlFilePath, QWidget *targetWidget, QString *errorStr, LcdSplitManager* manager = NULL);
	void setHandler(const QString& name, TagHandler handler);
protected:
	virtual bool LevelHandle(const QDomElement& firstElement, QBoxLayout* upperLayout, QString* errorStr);
private:
	bool LayoutHandle(const QDomElement& element, QBoxLayout* upperLayout, QString* errorStr);
	bool AreaHandle(const QDomElement& element, QBoxLayout* upperLayout, QString* errorStr);

	QHash<QString, TagHandler> m_TagNameToHandler;
	LcdSplitManager* m_Manager;
};

#endif // LCDCONFIGPARSER_H
